// 上面这个代码处理过度动画（默认加上不用管）
document.addEventListener('DOMContentLoaded', () => {
  setTimeout(() => {
    document.body.classList.add('sidenav-pinned')
    document.body.classList.add('ready')
  }, 200)
})

// 每个页面都会导入该js 统一的设置写这里即可
function tip(msg) {
  // 0. 找到轻提示的dom
  const myToast = document.querySelector('#myToast')
  // 让dom里的文字不写死，显示传进来的文字
  myToast.children[0].innerHTML = msg
  // 1. 实例化轻提示对象
  const toast = new bootstrap.Toast(myToast, {
    delay: 1500
  })

  // 2. 显示
  toast.show()
}

// 设置基地址
axios.defaults.baseURL = 'http://ajax-api.itheima.net'

// 添加请求拦截器
// 函数1：会在有请求即将发出去时调用
// 函数2：请求出错调用（一般不用，无视他即可）
axios.interceptors.request.use(function (config) {

  // 获取token
  const token = localStorage.getItem('token')
  if (token) {
    config.headers.Authorization = token
  }
  // config是本次请求的对象，你必须把这个请求对象return出去，它才发了请求
  // config长什么样子，发出去的请求就是什么样子
  return config;
}, function (error) {
  // 对请求错误做些什么
  return Promise.reject(error);
});


// 添加响应拦截器
// 函数1：响应成功调用，也就是服务器返回的状态码为2xx
//       参数response就是服务器返回的数据
//       必须return数据
// 函数2：响应错误调用，也就是服务器的状态码不是2xx
axios.interceptors.response.use(function (response) {

  // console.log('响应拦截', response)
  // 数据剥离
  return response.data;

}, function (error) {
  // 如果是401错误，就代表token有问题
  // 那么就打回登录页
  // 如果不是401，以前该怎么处理就怎么处理
  if (error.response.status === 401) {
    
    // 把本地存储清空
    localStorage.clear()
    // 打回登录页
    location.href = './login.html'
    
  } else {
    return Promise.reject(error);
  }
});


// 渲染用户名
const span = document.querySelector('.nav-item span.font-weight-bold')
if (span) {
  span.innerHTML = localStorage.getItem('username')
}

const logout = document.querySelector('#logout')
if (logout) {
  logout.addEventListener('click', function () {
    // 1. 清空本次存储
    localStorage.clear()
    // 2. 跳转到登录页
    location.href = './login.html'
  })
}